Staff Talk
 
BACK
  มาทำ DDNS ใช้เองกันเถอะ

Date : 2020-01-30 Time : 07:09:24

สวัสดี ปี ใหม่ จร้า. เนื่องจาก ช่วงนี้เจอ คนโพสถามเรื่อง ddns มาหลายรอบในเฟซบุ๊ค เลยคิดว่าเอ่าน่าเดียว ลองหาเวลาว่ามาเขียนซักกะหน่อย แลนแล้วจนรอดก็ไม่ว่างซักที. 555 วันนี้ กินข้าวเสร็จเลยเอาว่ะ มานั่งเขียนล่ะเดียวไม่ได้ทำซักกะที

เอาล่ะ หลักการ ของ การทำ DDNS คือ client หรือ host ส่งข้อมูลมาอัพเดท dns server ของเรา เพื่ออัพเดทค่า A ให้เปลี่ยนเป็น IP ใหม่ ๆ เราจะได้เข้าเป็นชื่อได้ ง่าย ๆ เช่น ?a.web.com หรือ b.web.com ไรพวกนี้

สิ่งที่จำเป็นต้องมี
VPS หรือ โฮสติ้ง. ถูก ๆสักที่. ราคาที่เห็นตามท้องตลาดก็ 150 BATH ต่อเดือน
DOMAIN ชื่อ ตัวเอง ราคา ตามท้องตลาด ตก 350 บาทต่อปี

รวม ต้นทุนก็ (150 x 12)+350=2,100 บาทต่อปี.
หากมี vps ทำเว็บไว้อยู่แล้ว ก็ประยัดลงไปอีกแยะเพราะ ระบบแทบกินเซอร์วิทน้อยมาก ๆ ที่ทำคัญ จะสร้างเป็นพัน ๆ ชื่อ sub domain ก็ได้ โดยรวมแล้วถูกมากกว่าไปซท่อพวก dyn อีก

ขั้นแรก สมัคร cloudflare.com ครับจดโดเมนให้เรียบร้อยแล้วใช้ cloudflare.com เป็น DNS SERVER เลือก plan แบบฟรี เอาจะได้ประหยัด ๆ

หรือคนจะประหยัดกว่านั้น ทำ cname วิ่งมาที่. Mikrotik ที่บ้าน แล้วเอา pi มาทำเป็นเว็บ เซิฟเวอร์ อัพเดทไอพีเองก็ได้อยู่ครับ (ยิ่งยุ่งยากขึ้นอีกนิดแต่ก็ลดเงินไปอีกโขใหญ่ ๆ เลย ลดเงินต้นทุนไปอีกเกือบสองพัน)

ตามตัวอย่าง ผมซื้อ DOMAIN ชื่อ mt108.info แล้วสร้างชื่อ sub ว่า test.mt108.info
ขั้นนี้ คือ เราสร้างชื่อรอไว้แล้วต่อมาก็ ทำตัวอัพเดทกัน

ต่อ มาผมออกแบบ database ไว้แบบนี้ครับ

client_id กะเอาไว้เป็น ไอดี ไว้สำหรับลบ หรือ จัดการ เวลาเราจะเขียนหน้าจัดการ
client_name เอาไว้เป็นชื่อ sub
client_ip เอาไว้เป็นเก็บไอพีที่อัพเดท
client_token เอาไว้ แบบว่า เป็น token กันคนมาแกล้งอัพเดท ของเรา

ต่อ ไป เข้าไปที่หน้า cloudflare.com คลิกเมนู ชื่อ เข้า My seting เมนูอยู่ขวามือบนน่ะครับ

เลื่อนมาล่าง ๆ สุดจะเจอ

ตรง Global API Key ให้เราคลิก View Key มันจะบอก คีย์ เรามาให้ copy. เก็บไว้อย่าให้ใครรู้

ต่อมาเข้ามาหน้าจัดการโดเมนของเรา เลือกเมนู OVERVIEW

เลื่อนมากลาง ๆ หน้าจะพบกับ Zone ID: เก็บเลขไว้น่ะ

กลับมาที่เว็บ ทำหน้าสำหรับ อัพเดท ไอพีกัน

ทำโค๊ด php. ชือ update.php

<?php

//ดึงไอพี ที่เรามาว่าไอพีอ่ะไร ไว้เอาไปอัพเดท
$IP_CLIENT=$_SERVER[‘REMOTE_ADDR’];
$KEY=$_GET[‘token’];
$SUB_DOMAIN=$_GET[‘domain’]; // SUB DOMAIN เรา

//เช็ค กับคีย์ที่เราตั้งไว้ ว่ามันตรงที่เราฟิกมั้ยไม่ตรงก็ข้ามไปไม่ทำไร

if($_GET[‘token’]==’xxxx’)
{

$ZONE_ID=’1234567890'; //ZONE_ID ของ DOMAIN เรา
$API_KEY==’XXXXXXXX’; // Global API Key
$email_authen=”/admin@xxx.com”; //email ที่ทำการ สมัคร cloudflare ไว้

//ดึงค่า ID dns_records มาก่อน
$url=”/https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?type=A&name=$SUB_DOMAIN";
$queryData = array(‘message’ => $message);
$queryData = http_build_query($queryData,’’,’&’);
$headerOptions = array( ‘http’=>array(
‘method’=>’GET’,
‘header’=> “Content-Type: application/json\r\n”
.”X-Auth-Key: “.$API_KEY.”\r\n”
.”X-Auth-Email: “.$email_authen.”\r\n” ));
$context = stream_context_create($headerOptions);
$result = file_get_contents($url, FALSE, $context);
$res = json_decode($result, true);
$Records_ID=$res[‘result’][0][‘id’]; //ID dns_records มาก่อน

$url = “/https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$Records_ID";
$ch = curl_init();
$header = array();
$header[] = “X-Auth-Email: $email_authen”;
$header[] = “X-Auth-Key: $API_KEY”;
$header[]=’Content-Type: application/json’;

$curl = curl_init($url);
$data = array(
‘type’ => ‘A’,
‘name’ => $SUB_DOMAIN,
‘content’ => $IP_CLIENT,
‘ttl’ => ‘120’,
‘proxied’ => ‘false’,
);

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, “PUT”);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_POSTFIELDS, ‘{“type”:”A”,”name”:”’.$SUB_DOMAIN.’”,”content”:”’.$IP_CLIENT.’”,”ttl”:120,”proxied”:false}’);

// Make the REST call, returning the result
$response = curl_exec($curl);
if (!$response) {
die(“Connection Failure.n”);
}

print $response;
}

ต่อ ไป ก็ เซ็ต ให้ mikrotik หรือ อุปกร์ เรียกเข้ามาเว็บตาม url

/http://ip เซิฟ/update.php?token=xxx&domain=test.mt108.info

เปลี่ยน xxx เป็นค่า คีย์ ที่เราตั้งไว้ test.mt108.info ก็เป็นชื่อซัพโดเมนที่เราทำไว้

หลังจากเรียก มันจะ api ไปอัพเดทที่ cloudflare.com ให้เลย

ปรับให้รันทุกห้านาทีก็ได้. แค่นี้ก็ได้ ddns ไว้ใช้ล่ะ
อยากปรับ ให้สะดวกก็ทำเชื่อกับฐานข้อมูล mysql เอาครับ

หากต้องการ บริจาค ให้ผู้เขียน ได้ที่นี่ครับ

แก้ตัวเลข 25 เป็นจำนวนเงินที่คุณพอใจ ตามศัทธา

/https://www.paypal.me/Thaigqsoft/25



credit : /https://medium.com/@tanakornpiamsin/%E0%B8%A1%E0%B8%B2%E0%B8%97%E0%B8%B3-ddns-%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B9%80%E0%B8%AD%E0%B8%87%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B9%80%E0%B8%96%E0%B8%AD%E0%B8%B0-4f447ad98e4



From Author a ( a )



Add Your Comment :
Name :
E-mail :
  ย่อหน้า ตัวหนา ตัวยก เส้นใต้ตัวห้อย ตัวหนังสือเรืองแสง ตัวหนังสือมีเงา ตัวเอียง สีแดง สีเขียว สีน้ำเงิน  
  68520  
 
Message :
Picture(Not More Than 50 k):
  Confirm that not spam
 

 

Back To Comment